package com.developer.web.content.privatepage.grupos;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.developer.core.page.PrivatePage;
import com.developer.core.utils.ObjectToXML;
import com.developer.logic.modulo.autenticacion.AutenticacionServicio;
import com.developer.logic.modulo.autenticacion.SessionAppUsuario;
import com.developer.logic.modulo.grupos.GrupoServicio;
import com.developer.logic.modulo.grupos.dto.Grupo;

public class PageCrearGruposPorFase_1 extends PrivatePage{
	
	String nextPage = "/grupos/PageCrearGruposPorFase_2.do";
	
	public StringBuffer executeAction(HttpServletRequest request) {
		
		StringBuffer xmlPage = new StringBuffer();
		ObjectToXML objectToXML = ObjectToXML.getInstance();
				
		
		//Session de aplicacion 
		SessionAppUsuario sessionAppUsuario = AutenticacionServicio.getInstance().getSessionAppUsuario(request);
		
		if(sessionAppUsuario!=null){
		
			//Se obtienen los parametros del request
			Map<String, Object> parameters = getParameters(request, true);
			
			//Grupo
			Grupo grupo = (Grupo)getParameterToObject("Grupo", Grupo.class, null, parameters);
			
			//equipos
			List<Long> idsEquipos = (List<Long>) getParameterToObject("EquiposGrupo", List.class, Long.class, parameters);
			List<Long> idsEquiposSinRepetir = getEquiposSinRepetir(idsEquipos);
			
			
			StringBuffer mensajeError = new StringBuffer();
			GrupoServicio grupoServicio = GrupoServicio.getInstance();
			Grupo grupoCreado = grupoServicio.crearGrupoTransaccional(grupo, idsEquipos, mensajeError);
			
			if(grupoCreado==null){
				this.nextPage= this.nextPage+"?error=1";
				sessionAppUsuario.getHttpSession().removeAttribute("var.error");
				sessionAppUsuario.getHttpSession().setAttribute("var.error", mensajeError.toString());
				
				sessionAppUsuario.notificarEvento("Error creando grupo: "+mensajeError.toString());
			}else{
				sessionAppUsuario.getHttpSession().setAttribute("var.grupoCreado", grupoCreado);
				
			}
		}else{
			
			xmlPage.append("<error>1</error>");
			xmlPage.append(objectToXML.getXML(new String("Usuario invalido. Por favor inicie session correctamente")));
			
		}	
		
		return xmlPage;
	}

	@Override
	public String getNextPage() {
		// TODO Auto-generated method stub
		return nextPage;
	}

	@Override
	public boolean isAccesoValido(HttpServletRequest arg0) {
		return AutenticacionServicio.getInstance().isAccesoPrivadoValido(arg0);
	}
	
	private List<Long> getEquiposSinRepetir(List<Long> idsEquipos){
		List<Long> idsEquiposSinRepetir = null;
		HashMap<String, String> equipos = new HashMap<String, String>();
		
		if(idsEquipos!= null){
			idsEquiposSinRepetir = new ArrayList<Long>();
			for (Long acono : idsEquipos) {
				if(!equipos.containsKey(""+acono)){
					equipos.put(""+acono, ""+acono);
					idsEquiposSinRepetir.add(acono);
					
				}
				
			}
				
			
		}
		
		return idsEquiposSinRepetir;
		
	}
	

}
